The present invention relates generally to an improved computer processing instruction set, and more particularly to an instruction set having a pixel average functionality.
Computer architecture designers are constantly trying to increase the speed and efficiency of computer processors. For example, computer architecture designers have attempted to increase processing speeds by increasing clock speeds and attempting latency hiding techniques, such as data prefetching and cache memories. In addition, other techniques, such as instruction-level parallelism using VLIW, multiple-issue superscalar, speculative execution, scoreboarding, and pipelining are used to further enhance performance and increase the number of instructions issued per clock cycle (IPC).
Architectures that attain their performance through instruction-level parallelism seem to be the growing trend in the computer architecture field. Examples of architectures utilizing instruction-level parallelism include single instruction multiple data (SIMD) architecture, multiple instruction multiple data (MIMD) architecture, vector or array processing, and very long instruction word (VLIW) techniques. Of these, VLIW appears to be the most suitable for general purpose computing. However, there is a need to further improve architectures to increase efficiency.
Video processing frequently requires averaging of pixels. For example, when a frame moves a half pixel in one direction, adjacent pixels are averaged to calculate how to display the moved frame. Additionally, compression algorithms such as MPEG video compression and H.261 video conferencing standard require averaging of pixels. As those skilled in the art can appreciate, increasing the performance of pixel averaging could increase the speed of video processing.
Conventional systems calculate pixel averages in software by following an add operation by a shift operation. The shift operation serves to effectively divide the intermediate sum by two. Typically, only two pixels are averaged at a time using this algorithm. Large images with fast frame display rates can require performing a large number of pixel averages. For example, 720×576 pixel image has over four hundred thousand pixels that would require recalculation if the image moved a fraction of a pixel. Accordingly, there is a general need to increase the performance of pixel averaging.